1. Field of the Invention
The invention relates to the field of circuit design and, more particularly, to the use of implementation directives in implementing a circuit design.
2. Description of the Related Art
Circuit designs, and particularly designs for Field Programmable Gate Arrays (FPGA's), have become increasingly complex and heterogeneous. Modern circuit designs can include a variety of different components or resources including, but not limited to, registers, block Random Access Memory (RAM), multipliers, processors, and the like. This increasing complexity makes design tools, maintenance of design tools as well as placement and signal routing of circuit designs more cumbersome. Existing design tools can have multiple (and complex) flows that fail to be uniform, further adding to the complexity in the tools and their maintenance. Furthermore, existing design tools fail to provide sufficient flexibility in terms of representing design granularity in a particular design.
Many of the tasks performed in these flows relate to working with containers of grouped logic. Flows are determined in part by user specified command line parameters and constraint files. Point tools read the parameters from the command line and constraint files, and operate on the groups of logic with algorithms that are dependent on the particular flow that is being followed. The algorithms are fractured and branch into other algorithms depending on characteristics such as the flow information and the additional parameters that define the grouped logic. Note, changes to the flow definition may require extensive modification to underlying algorithms.
In existing systems, individual point tools would use flow information to change the behavior of algorithms. For example, a tool may need to know if it should use results from a previous implementation (guide) when placing and routing a container of logic. The tool would determine the flow, and perhaps not guide the container if it had a change to the logic and it was in an incremental design flow. In other words, flow information was interspersed widely throughout the point tools' algorithms. For instance, in a modular design flow, Place and Route tools read data from the command line, but the existence of a previously implemented module in the design database would invoke a different algorithm than was originally being processed. The distributed nature of flow information throughout the algorithms has many disadvantages. A specified flow is a very high level concept that affects many low-level decisions. Any changes to the high-level flow information will result in changes to the code in many different places that can result in costly coding errors. Relatively minor changes to the flow can result in major modifications to the underlying algorithms. Consequently, it is difficult to support new flows or modify existing flows. A software paradigm fails to exist that simplifies and manages a multitude of flows or complex flows supported by an application or an algorithm.